package com.xpffly.design.visitor.demo;

import com.xpffly.design.visitor.demo.service.AnimalFactory;
import com.xpffly.design.visitor.demo.service.impl.Owner;
import com.xpffly.design.visitor.demo.service.impl.SomeOne;

/**
 * @Author: 午夜学徒
 * @Date: 2022/4/5 16:50
 * @Description：访问者模式--demo场景类 <p>
 * 给宠物喂食：
 * <p>
 * 访问者角色：给宠物喂食的人
 * <p>
 * 具体访问者角色：主人、其他人
 * <p>
 * 抽象元素类角色：动物抽象类
 * <p>
 * 具体元素对象：宠物狗、宠物猫
 * <p>
 * 结构对象角色：主人的家
 */
public class Scene {
    public static void main(String[] args) {
        // 构造数据对象
        AnimalFactory animalFactory = new AnimalFactory();
        animalFactory.createData();
        // 创建 访问者 someOne
        SomeOne someOne = new SomeOne();
        animalFactory.action(someOne);
        // 创建访问者 owner
        Owner owner = new Owner();
        animalFactory.action(owner);
    }
}
